<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: g2o::SparseBlockMatrix&lt; MatrixType &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classg2o_1_1_sparse_block_matrix.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classg2o_1_1_sparse_block_matrix-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">g2o::SparseBlockMatrix&lt; MatrixType &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Sparse matrix which uses blocks.  
 <a href="classg2o_1_1_sparse_block_matrix.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="sparse__block__matrix_8h_source.html">sparse_block_matrix.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aaa6ca1ae454ed70f62992b6401645f4e"><td class="memItemLeft" align="right" valign="top">typedef std::map&lt; int, <a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a></td></tr>
<tr class="separator:aaa6ca1ae454ed70f62992b6401645f4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2f7376cbf055803fda6527dcc43e3be"><td class="memItemLeft" align="right" valign="top">typedef MatrixType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a></td></tr>
<tr class="memdesc:ab2f7376cbf055803fda6527dcc43e3be"><td class="mdescLeft">&#160;</td><td class="mdescRight">this is the type of the elementary block, it is an Eigen::Matrix.  <a href="#ab2f7376cbf055803fda6527dcc43e3be">More...</a><br /></td></tr>
<tr class="separator:ab2f7376cbf055803fda6527dcc43e3be"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae873eb42e1b3fbbe44d3cee48959c09a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ae873eb42e1b3fbbe44d3cee48959c09a">add</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; *&amp;dest) const</td></tr>
<tr class="memdesc:ae873eb42e1b3fbbe44d3cee48959c09a"><td class="mdescLeft">&#160;</td><td class="mdescRight">adds the current matrix to the destination  <a href="#ae873eb42e1b3fbbe44d3cee48959c09a">More...</a><br /></td></tr>
<tr class="separator:ae873eb42e1b3fbbe44d3cee48959c09a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaca7b38d2e9a18eebf9e6f5957af0cf7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaca7b38d2e9a18eebf9e6f5957af0cf7">block</a> (int r, int c, bool alloc=false)</td></tr>
<tr class="memdesc:aaca7b38d2e9a18eebf9e6f5957af0cf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the block at location r,c. if alloc=true he block is created if it does not exist  <a href="#aaca7b38d2e9a18eebf9e6f5957af0cf7">More...</a><br /></td></tr>
<tr class="separator:aaca7b38d2e9a18eebf9e6f5957af0cf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8268815dbc660a4aa04c4360e3e9e2c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aa8268815dbc660a4aa04c4360e3e9e2c">block</a> (int r, int c) const</td></tr>
<tr class="memdesc:aa8268815dbc660a4aa04c4360e3e9e2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the block at location r,c  <a href="#aa8268815dbc660a4aa04c4360e3e9e2c">More...</a><br /></td></tr>
<tr class="separator:aa8268815dbc660a4aa04c4360e3e9e2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab818f8923b845d08a38e8de1145fbb65"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab818f8923b845d08a38e8de1145fbb65">blockCols</a> () const</td></tr>
<tr class="memdesc:ab818f8923b845d08a38e8de1145fbb65"><td class="mdescLeft">&#160;</td><td class="mdescRight">the block matrices per block-column  <a href="#ab818f8923b845d08a38e8de1145fbb65">More...</a><br /></td></tr>
<tr class="separator:ab818f8923b845d08a38e8de1145fbb65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31236f3e11cb7af4979d68fdba3d5e33"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a31236f3e11cb7af4979d68fdba3d5e33">blockCols</a> ()</td></tr>
<tr class="separator:a31236f3e11cb7af4979d68fdba3d5e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af14b7aaa588b339f2c06793fcc0d4e09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#af14b7aaa588b339f2c06793fcc0d4e09">clear</a> (bool dealloc=false)</td></tr>
<tr class="memdesc:af14b7aaa588b339f2c06793fcc0d4e09"><td class="mdescLeft">&#160;</td><td class="mdescRight">this zeroes all the blocks. If dealloc=true the blocks are removed from memory  <a href="#af14b7aaa588b339f2c06793fcc0d4e09">More...</a><br /></td></tr>
<tr class="separator:af14b7aaa588b339f2c06793fcc0d4e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacf3c757056cfb81e510e3005a07278e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aacf3c757056cfb81e510e3005a07278e">clone</a> () const</td></tr>
<tr class="memdesc:aacf3c757056cfb81e510e3005a07278e"><td class="mdescLeft">&#160;</td><td class="mdescRight">deep copy of a sparse-block-matrix;  <a href="#aacf3c757056cfb81e510e3005a07278e">More...</a><br /></td></tr>
<tr class="separator:aacf3c757056cfb81e510e3005a07278e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a502857f0a792ad37055964705a983590"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a502857f0a792ad37055964705a983590">colBaseOfBlock</a> (int c) const</td></tr>
<tr class="memdesc:a502857f0a792ad37055964705a983590"><td class="mdescLeft">&#160;</td><td class="mdescRight">where does the col at block-col r starts?  <a href="#a502857f0a792ad37055964705a983590">More...</a><br /></td></tr>
<tr class="separator:a502857f0a792ad37055964705a983590"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dc1115273da4863f4625b1dc9569d89"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a1dc1115273da4863f4625b1dc9569d89">colBlockIndices</a> () const</td></tr>
<tr class="memdesc:a1dc1115273da4863f4625b1dc9569d89"><td class="mdescLeft">&#160;</td><td class="mdescRight">indices of the column blocks  <a href="#a1dc1115273da4863f4625b1dc9569d89">More...</a><br /></td></tr>
<tr class="separator:a1dc1115273da4863f4625b1dc9569d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba255bdbb8e0a0d2802ae27e6d4f7cc7"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aba255bdbb8e0a0d2802ae27e6d4f7cc7">colBlockIndices</a> ()</td></tr>
<tr class="separator:aba255bdbb8e0a0d2802ae27e6d4f7cc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9dfcc991976a6c21dcbed961f06282d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ac9dfcc991976a6c21dcbed961f06282d">cols</a> () const</td></tr>
<tr class="memdesc:ac9dfcc991976a6c21dcbed961f06282d"><td class="mdescLeft">&#160;</td><td class="mdescRight">columns of the matrix  <a href="#ac9dfcc991976a6c21dcbed961f06282d">More...</a><br /></td></tr>
<tr class="separator:ac9dfcc991976a6c21dcbed961f06282d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe3ef87aecd7a76eab27e91131dbe0c1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#afe3ef87aecd7a76eab27e91131dbe0c1">colsOfBlock</a> (int c) const</td></tr>
<tr class="memdesc:afe3ef87aecd7a76eab27e91131dbe0c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">how many cols does the block at block-col c has?  <a href="#afe3ef87aecd7a76eab27e91131dbe0c1">More...</a><br /></td></tr>
<tr class="separator:afe3ef87aecd7a76eab27e91131dbe0c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add5e7a5c95f2a6be69ededec4a043a94"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#add5e7a5c95f2a6be69ededec4a043a94">fillBlockStructure</a> (<a class="el" href="classg2o_1_1_matrix_structure.html">MatrixStructure</a> &amp;ms) const</td></tr>
<tr class="memdesc:add5e7a5c95f2a6be69ededec4a043a94"><td class="mdescLeft">&#160;</td><td class="mdescRight">exports the non zero blocks in the structure matrix ms  <a href="#add5e7a5c95f2a6be69ededec4a043a94">More...</a><br /></td></tr>
<tr class="separator:add5e7a5c95f2a6be69ededec4a043a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54b93e3ed8ccb6c30e694d417f7c336f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a54b93e3ed8ccb6c30e694d417f7c336f">fillCCS</a> (int *Cp, int *Ci, double *Cx, bool upperTriangle=false) const</td></tr>
<tr class="memdesc:a54b93e3ed8ccb6c30e694d417f7c336f"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill the CCS arrays of a matrix, arrays have to be allocated beforehand  <a href="#a54b93e3ed8ccb6c30e694d417f7c336f">More...</a><br /></td></tr>
<tr class="separator:a54b93e3ed8ccb6c30e694d417f7c336f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01f380ada64511737cb97631d39a9e8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ac01f380ada64511737cb97631d39a9e8">fillCCS</a> (double *Cx, bool upperTriangle=false) const</td></tr>
<tr class="memdesc:ac01f380ada64511737cb97631d39a9e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">fill the CCS arrays of a matrix, arrays have to be allocated beforehand.  <a href="#ac01f380ada64511737cb97631d39a9e8">More...</a><br /></td></tr>
<tr class="separator:ac01f380ada64511737cb97631d39a9e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a783a9c976391f0c698866e34eeef43f5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a783a9c976391f0c698866e34eeef43f5">fillSparseBlockMatrixCCS</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix_c_c_s.html">SparseBlockMatrixCCS</a>&lt; MatrixType &gt; &amp;blockCCS) const</td></tr>
<tr class="memdesc:a783a9c976391f0c698866e34eeef43f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">copy into CCS structure  <a href="#a783a9c976391f0c698866e34eeef43f5">More...</a><br /></td></tr>
<tr class="separator:a783a9c976391f0c698866e34eeef43f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3808d27b1def55e9dd6e26b678d8f728"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a3808d27b1def55e9dd6e26b678d8f728">fillSparseBlockMatrixCCSTransposed</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix_c_c_s.html">SparseBlockMatrixCCS</a>&lt; MatrixType &gt; &amp;blockCCS) const</td></tr>
<tr class="memdesc:a3808d27b1def55e9dd6e26b678d8f728"><td class="mdescLeft">&#160;</td><td class="mdescRight">copy as transposed into a CCS structure  <a href="#a3808d27b1def55e9dd6e26b678d8f728">More...</a><br /></td></tr>
<tr class="separator:a3808d27b1def55e9dd6e26b678d8f728"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1aa3a3ed3278b82945151b02223e1c"><td class="memTemplParams" colspan="2">template&lt;class MatrixResultType , class MatrixFactorType &gt; </td></tr>
<tr class="memitem:abd1aa3a3ed3278b82945151b02223e1c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#abd1aa3a3ed3278b82945151b02223e1c">multiply</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixResultType &gt; *&amp;dest, const <a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixFactorType &gt; *M) const</td></tr>
<tr class="memdesc:abd1aa3a3ed3278b82945151b02223e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">dest = (*this) * M  <a href="#abd1aa3a3ed3278b82945151b02223e1c">More...</a><br /></td></tr>
<tr class="separator:abd1aa3a3ed3278b82945151b02223e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae71075d1c8e421389316712d12ba1598"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ae71075d1c8e421389316712d12ba1598">multiply</a> (double *&amp;dest, const double *src) const</td></tr>
<tr class="memdesc:ae71075d1c8e421389316712d12ba1598"><td class="mdescLeft">&#160;</td><td class="mdescRight">dest = (*this) * src  <a href="#ae71075d1c8e421389316712d12ba1598">More...</a><br /></td></tr>
<tr class="separator:ae71075d1c8e421389316712d12ba1598"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87a57d96e63668c7131dee642c25ac5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a87a57d96e63668c7131dee642c25ac5f">multiplySymmetricUpperTriangle</a> (double *&amp;dest, const double *src) const</td></tr>
<tr class="memdesc:a87a57d96e63668c7131dee642c25ac5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">compute dest = (*this) * src However, assuming that this is a symmetric matrix where only the upper triangle is stored  <a href="#a87a57d96e63668c7131dee642c25ac5f">More...</a><br /></td></tr>
<tr class="separator:a87a57d96e63668c7131dee642c25ac5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f9e289e4039e668d33ad565a637e39a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a3f9e289e4039e668d33ad565a637e39a">nonZeroBlocks</a> () const</td></tr>
<tr class="memdesc:a3f9e289e4039e668d33ad565a637e39a"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of allocated blocks  <a href="#a3f9e289e4039e668d33ad565a637e39a">More...</a><br /></td></tr>
<tr class="separator:a3f9e289e4039e668d33ad565a637e39a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06dc97167a923119bdf99818033104d8"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a06dc97167a923119bdf99818033104d8">nonZeros</a> () const</td></tr>
<tr class="memdesc:a06dc97167a923119bdf99818033104d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of non-zero elements  <a href="#a06dc97167a923119bdf99818033104d8">More...</a><br /></td></tr>
<tr class="separator:a06dc97167a923119bdf99818033104d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7efaf2e4ea855f6faf500f9feacf3d3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a7efaf2e4ea855f6faf500f9feacf3d3e">rightMultiply</a> (double *&amp;dest, const double *src) const</td></tr>
<tr class="memdesc:a7efaf2e4ea855f6faf500f9feacf3d3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">dest = M * (*this)  <a href="#a7efaf2e4ea855f6faf500f9feacf3d3e">More...</a><br /></td></tr>
<tr class="separator:a7efaf2e4ea855f6faf500f9feacf3d3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af718590d044a1b44e4079136c29efcd1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#af718590d044a1b44e4079136c29efcd1">rowBaseOfBlock</a> (int r) const</td></tr>
<tr class="memdesc:af718590d044a1b44e4079136c29efcd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">where does the row at block-row r starts?  <a href="#af718590d044a1b44e4079136c29efcd1">More...</a><br /></td></tr>
<tr class="separator:af718590d044a1b44e4079136c29efcd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4fff500693b46e4f62a2f828934d198c"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a4fff500693b46e4f62a2f828934d198c">rowBlockIndices</a> () const</td></tr>
<tr class="memdesc:a4fff500693b46e4f62a2f828934d198c"><td class="mdescLeft">&#160;</td><td class="mdescRight">indices of the row blocks  <a href="#a4fff500693b46e4f62a2f828934d198c">More...</a><br /></td></tr>
<tr class="separator:a4fff500693b46e4f62a2f828934d198c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03a2cfdb856c2dac4875889d55ecda84"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a03a2cfdb856c2dac4875889d55ecda84">rowBlockIndices</a> ()</td></tr>
<tr class="separator:a03a2cfdb856c2dac4875889d55ecda84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaad7b1558369203795419345ee014852"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaad7b1558369203795419345ee014852">rows</a> () const</td></tr>
<tr class="memdesc:aaad7b1558369203795419345ee014852"><td class="mdescLeft">&#160;</td><td class="mdescRight">rows of the matrix  <a href="#aaad7b1558369203795419345ee014852">More...</a><br /></td></tr>
<tr class="separator:aaad7b1558369203795419345ee014852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a637d4a6d2d6f444be55a158497c8a07c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a637d4a6d2d6f444be55a158497c8a07c">rowsOfBlock</a> (int r) const</td></tr>
<tr class="memdesc:a637d4a6d2d6f444be55a158497c8a07c"><td class="mdescLeft">&#160;</td><td class="mdescRight">how many rows does the block at block-row r has?  <a href="#a637d4a6d2d6f444be55a158497c8a07c">More...</a><br /></td></tr>
<tr class="separator:a637d4a6d2d6f444be55a158497c8a07c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbccb3c0404beeba566e21429089e288"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#afbccb3c0404beeba566e21429089e288">scale</a> (double a)</td></tr>
<tr class="memdesc:afbccb3c0404beeba566e21429089e288"><td class="mdescLeft">&#160;</td><td class="mdescRight">*this *= a  <a href="#afbccb3c0404beeba566e21429089e288">More...</a><br /></td></tr>
<tr class="separator:afbccb3c0404beeba566e21429089e288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ccb3f90afe0d190fbc94df5f0313763"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a7ccb3f90afe0d190fbc94df5f0313763">slice</a> (int rmin, int rmax, int cmin, int cmax, bool alloc=true) const</td></tr>
<tr class="memdesc:a7ccb3f90afe0d190fbc94df5f0313763"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns a view or a copy of the block matrix  <a href="#a7ccb3f90afe0d190fbc94df5f0313763">More...</a><br /></td></tr>
<tr class="separator:a7ccb3f90afe0d190fbc94df5f0313763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0407f26837522322d7b7fd7a5259ee3c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a0407f26837522322d7b7fd7a5259ee3c">SparseBlockMatrix</a> (const int *rbi, const int *cbi, int rb, int cb, bool hasStorage=true)</td></tr>
<tr class="memdesc:a0407f26837522322d7b7fd7a5259ee3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">constructs a sparse block matrix having a specific layout  <a href="#a0407f26837522322d7b7fd7a5259ee3c">More...</a><br /></td></tr>
<tr class="separator:a0407f26837522322d7b7fd7a5259ee3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9b8a9cb09a88bc444775a9974db8760"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#af9b8a9cb09a88bc444775a9974db8760">SparseBlockMatrix</a> ()</td></tr>
<tr class="separator:af9b8a9cb09a88bc444775a9974db8760"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dcf826fe329e922eae1ea92c73c7b23"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a0dcf826fe329e922eae1ea92c73c7b23">symmPermutation</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; *&amp;dest, const int *pinv, bool onlyUpper=false) const</td></tr>
<tr class="memdesc:a0dcf826fe329e922eae1ea92c73c7b23"><td class="mdescLeft">&#160;</td><td class="mdescRight">writes in dest a block permutaton specified by pinv.  <a href="#a0dcf826fe329e922eae1ea92c73c7b23">More...</a><br /></td></tr>
<tr class="separator:a0dcf826fe329e922eae1ea92c73c7b23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b1e9dc3a24b0ab41d7002396a61c833"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a0b1e9dc3a24b0ab41d7002396a61c833">takePatternFromHash</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix_hash_map.html">SparseBlockMatrixHashMap</a>&lt; MatrixType &gt; &amp;hashMatrix)</td></tr>
<tr class="memdesc:a0b1e9dc3a24b0ab41d7002396a61c833"><td class="mdescLeft">&#160;</td><td class="mdescRight">take over the memory and matrix pattern from a hash matrix.  <a href="#a0b1e9dc3a24b0ab41d7002396a61c833">More...</a><br /></td></tr>
<tr class="separator:a0b1e9dc3a24b0ab41d7002396a61c833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d449bb4054991867a9b50b6c0d978eb"><td class="memTemplParams" colspan="2">template&lt;class MatrixTransposedType &gt; </td></tr>
<tr class="memitem:a2d449bb4054991867a9b50b6c0d978eb"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a2d449bb4054991867a9b50b6c0d978eb">transpose</a> (<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixTransposedType &gt; *&amp;dest) const</td></tr>
<tr class="memdesc:a2d449bb4054991867a9b50b6c0d978eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">transposes a block matrix, The transposed type should match the argument false on failure  <a href="#a2d449bb4054991867a9b50b6c0d978eb">More...</a><br /></td></tr>
<tr class="separator:a2d449bb4054991867a9b50b6c0d978eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21725f29b3f1bbc4e4ba77ee3f960ddc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a21725f29b3f1bbc4e4ba77ee3f960ddc">writeOctave</a> (const char *filename, bool upperTriangle=true) const</td></tr>
<tr class="memdesc:a21725f29b3f1bbc4e4ba77ee3f960ddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">write the content of this matrix to a stream loadable by Octave  <a href="#a21725f29b3f1bbc4e4ba77ee3f960ddc">More...</a><br /></td></tr>
<tr class="separator:a21725f29b3f1bbc4e4ba77ee3f960ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70d18ec0265a69e1291083e20a5bc95e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#a70d18ec0265a69e1291083e20a5bc95e">~SparseBlockMatrix</a> ()</td></tr>
<tr class="separator:a70d18ec0265a69e1291083e20a5bc95e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ae236d56a01ba4d292450a518621b41f8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ae236d56a01ba4d292450a518621b41f8">_blockCols</a></td></tr>
<tr class="memdesc:ae236d56a01ba4d292450a518621b41f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">array of maps of blocks.  <a href="#ae236d56a01ba4d292450a518621b41f8">More...</a><br /></td></tr>
<tr class="separator:ae236d56a01ba4d292450a518621b41f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca008740c37d2d00b90f696ab19abb59"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#aca008740c37d2d00b90f696ab19abb59">_colBlockIndices</a></td></tr>
<tr class="memdesc:aca008740c37d2d00b90f696ab19abb59"><td class="mdescLeft">&#160;</td><td class="mdescRight">vector of the indices of the blocks along the cols  <a href="#aca008740c37d2d00b90f696ab19abb59">More...</a><br /></td></tr>
<tr class="separator:aca008740c37d2d00b90f696ab19abb59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3f063a5efc2708b41806ac361fd3ca6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ae3f063a5efc2708b41806ac361fd3ca6">_hasStorage</a></td></tr>
<tr class="separator:ae3f063a5efc2708b41806ac361fd3ca6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0bd9c6d5b7b8704af1bc679032382e3"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab0bd9c6d5b7b8704af1bc679032382e3">_rowBlockIndices</a></td></tr>
<tr class="memdesc:ab0bd9c6d5b7b8704af1bc679032382e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">vector of the indices of the blocks along the rows.  <a href="#ab0bd9c6d5b7b8704af1bc679032382e3">More...</a><br /></td></tr>
<tr class="separator:ab0bd9c6d5b7b8704af1bc679032382e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;class MatrixType = MatrixXd&gt;<br />
class g2o::SparseBlockMatrix&lt; MatrixType &gt;</h3>

<p>Sparse matrix which uses blocks. </p>
<p>Template class that specifies a sparse block matrix. A block matrix is a sparse matrix made of dense blocks. These blocks cannot have a random pattern, but follow a (variable) grid structure. This structure is specified by a partition of the rows and the columns of the matrix. The blocks are represented by the Eigen::Matrix structure, thus they can be statically or dynamically allocated. For efficiency reasons it is convenient to allocate them statically, when possible. A static block matrix has all blocks of the same size, and the size of the block is specified by the template argument. If this is not the case, and you have different block sizes than you have to use a dynamic-block matrix (default template argument). </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="aaa6ca1ae454ed70f62992b6401645f4e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef std::map&lt;int, <a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a>*&gt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab2f7376cbf055803fda6527dcc43e3be"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef MatrixType <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>this is the type of the elementary block, it is an Eigen::Matrix. </p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0407f26837522322d7b7fd7a5259ee3c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a> </td>
          <td>(</td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>rbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>cbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>hasStorage</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>constructs a sparse block matrix having a specific layout </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rbi</td><td>array of int containing the row layout of the blocks. the component i of the array should contain the index of the first row of the block i+1. </td></tr>
    <tr><td class="paramname">rbi</td><td>array of int containing the column layout of the blocks. the component i of the array should contain the index of the first col of the block i+1. </td></tr>
    <tr><td class="paramname">rb</td><td>number of row blocks </td></tr>
    <tr><td class="paramname">cb</td><td>number of col blocks </td></tr>
    <tr><td class="paramname">hasStorage</td><td>set it to true if the matrix "owns" the blocks, thus it deletes it on destruction. if false the matrix is only a "view" over an existing structure. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="af9b8a9cb09a88bc444775a9974db8760"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a70d18ec0265a69e1291083e20a5bc95e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::~<a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae873eb42e1b3fbbe44d3cee48959c09a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::add </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; *&amp;&#160;</td>
          <td class="paramname"><em>dest</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>adds the current matrix to the destination </p>

</div>
</div>
<a id="aaca7b38d2e9a18eebf9e6f5957af0cf7"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a> * <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::block </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>alloc</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>returns the block at location r,c. if alloc=true he block is created if it does not exist </p>

</div>
</div>
<a id="aa8268815dbc660a4aa04c4360e3e9e2c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt;::<a class="el" href="classg2o_1_1_sparse_block_matrix.html#ab2f7376cbf055803fda6527dcc43e3be">SparseMatrixBlock</a> * <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::block </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>returns the block at location r,c </p>

</div>
</div>
<a id="ab818f8923b845d08a38e8de1145fbb65"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;<a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a>&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::blockCols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>the block matrices per block-column </p>

</div>
</div>
<a id="a31236f3e11cb7af4979d68fdba3d5e33"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a>&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::blockCols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af14b7aaa588b339f2c06793fcc0d4e09"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::clear </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>dealloc</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>this zeroes all the blocks. If dealloc=true the blocks are removed from memory </p>

</div>
</div>
<a id="aacf3c757056cfb81e510e3005a07278e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; * <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::clone </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>deep copy of a sparse-block-matrix; </p>

</div>
</div>
<a id="a502857f0a792ad37055964705a983590"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::colBaseOfBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>where does the col at block-col r starts? </p>

</div>
</div>
<a id="a1dc1115273da4863f4625b1dc9569d89"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;int&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::colBlockIndices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>indices of the column blocks </p>

</div>
</div>
<a id="aba255bdbb8e0a0d2802ae27e6d4f7cc7"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::colBlockIndices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac9dfcc991976a6c21dcbed961f06282d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::cols </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>columns of the matrix </p>

</div>
</div>
<a id="afe3ef87aecd7a76eab27e91131dbe0c1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::colsOfBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>how many cols does the block at block-col c has? </p>

</div>
</div>
<a id="add5e7a5c95f2a6be69ededec4a043a94"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::fillBlockStructure </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_matrix_structure.html">MatrixStructure</a> &amp;&#160;</td>
          <td class="paramname"><em>ms</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>exports the non zero blocks in the structure matrix ms </p>

</div>
</div>
<a id="a54b93e3ed8ccb6c30e694d417f7c336f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::fillCCS </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>Cp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>Ci</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>Cx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>upperTriangle</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>fill the CCS arrays of a matrix, arrays have to be allocated beforehand </p>

</div>
</div>
<a id="ac01f380ada64511737cb97631d39a9e8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::fillCCS </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>Cx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>upperTriangle</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>fill the CCS arrays of a matrix, arrays have to be allocated beforehand. </p>
<p>This function only writes the values and assumes that column and row structures have already been written. </p>

</div>
</div>
<a id="a783a9c976391f0c698866e34eeef43f5"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::fillSparseBlockMatrixCCS </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix_c_c_s.html">SparseBlockMatrixCCS</a>&lt; MatrixType &gt; &amp;&#160;</td>
          <td class="paramname"><em>blockCCS</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>copy into CCS structure </p>
<dl class="section return"><dt>Returns</dt><dd>number of processed blocks, -1 on error </dd></dl>

</div>
</div>
<a id="a3808d27b1def55e9dd6e26b678d8f728"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::fillSparseBlockMatrixCCSTransposed </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix_c_c_s.html">SparseBlockMatrixCCS</a>&lt; MatrixType &gt; &amp;&#160;</td>
          <td class="paramname"><em>blockCCS</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>copy as transposed into a CCS structure </p>
<dl class="section return"><dt>Returns</dt><dd>number of processed blocks, -1 on error </dd></dl>

</div>
</div>
<a id="abd1aa3a3ed3278b82945151b02223e1c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
<div class="memtemplate">
template&lt;class MatrixResultType , class MatrixFactorType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::multiply </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixResultType &gt; *&amp;&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixFactorType &gt; *&#160;</td>
          <td class="paramname"><em>M</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>dest = (*this) * M </p>

</div>
</div>
<a id="ae71075d1c8e421389316712d12ba1598"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::multiply </td>
          <td>(</td>
          <td class="paramtype">double *&amp;&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>src</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>dest = (*this) * src </p>

</div>
</div>
<a id="a87a57d96e63668c7131dee642c25ac5f"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::multiplySymmetricUpperTriangle </td>
          <td>(</td>
          <td class="paramtype">double *&amp;&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>src</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>compute dest = (*this) * src However, assuming that this is a symmetric matrix where only the upper triangle is stored </p>

</div>
</div>
<a id="a3f9e289e4039e668d33ad565a637e39a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::nonZeroBlocks </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>number of allocated blocks </p>

</div>
</div>
<a id="a06dc97167a923119bdf99818033104d8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::nonZeros </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>number of non-zero elements </p>

</div>
</div>
<a id="a7efaf2e4ea855f6faf500f9feacf3d3e"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rightMultiply </td>
          <td>(</td>
          <td class="paramtype">double *&amp;&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>src</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>dest = M * (*this) </p>

</div>
</div>
<a id="af718590d044a1b44e4079136c29efcd1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rowBaseOfBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>r</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>where does the row at block-row r starts? </p>

</div>
</div>
<a id="a4fff500693b46e4f62a2f828934d198c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;int&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rowBlockIndices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>indices of the row blocks </p>

</div>
</div>
<a id="a03a2cfdb856c2dac4875889d55ecda84"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt;&amp; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rowBlockIndices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aaad7b1558369203795419345ee014852"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rows </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>rows of the matrix </p>

</div>
</div>
<a id="a637d4a6d2d6f444be55a158497c8a07c"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::rowsOfBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>r</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>how many rows does the block at block-row r has? </p>

</div>
</div>
<a id="afbccb3c0404beeba566e21429089e288"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::scale </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>a</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>*this *= a </p>

</div>
</div>
<a id="a7ccb3f90afe0d190fbc94df5f0313763"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; * <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::slice </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rmin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rmax</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>cmin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>cmax</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>alloc</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>returns a view or a copy of the block matrix </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rmin</td><td>starting block row </td></tr>
    <tr><td class="paramname">rmax</td><td>ending block row </td></tr>
    <tr><td class="paramname">cmin</td><td>starting block col </td></tr>
    <tr><td class="paramname">cmax</td><td>ending block col </td></tr>
    <tr><td class="paramname">alloc</td><td>if true it makes a deep copy, if false it creates a view. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0dcf826fe329e922eae1ea92c73c7b23"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::symmPermutation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixType &gt; *&amp;&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>pinv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>onlyUpper</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>writes in dest a block permutaton specified by pinv. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pinv</td><td>array such that new_block[i] = old_block[pinv[i]] </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0b1e9dc3a24b0ab41d7002396a61c833"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::takePatternFromHash </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix_hash_map.html">SparseBlockMatrixHashMap</a>&lt; MatrixType &gt; &amp;&#160;</td>
          <td class="paramname"><em>hashMatrix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>take over the memory and matrix pattern from a hash matrix. </p>
<p>The structure of the hash matrix will be cleared. </p>

</div>
</div>
<a id="a2d449bb4054991867a9b50b6c0d978eb"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
<div class="memtemplate">
template&lt;class MatrixTransposedType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::transpose </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a>&lt; MatrixTransposedType &gt; *&amp;&#160;</td>
          <td class="paramname"><em>dest</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>transposes a block matrix, The transposed type should match the argument false on failure </p>

</div>
</div>
<a id="a21725f29b3f1bbc4e4ba77ee3f960ddc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::writeOctave </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>filename</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>upperTriangle</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>write the content of this matrix to a stream loadable by Octave </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">upperTriangle</td><td>does this matrix store only the upper triangular blocks </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ae236d56a01ba4d292450a518621b41f8"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="classg2o_1_1_sparse_block_matrix.html#aaa6ca1ae454ed70f62992b6401645f4e">IntBlockMap</a>&gt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::_blockCols</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>array of maps of blocks. </p>
<p>The index of the array represent a block column of the matrix and the block column is stored as a map row_block -&gt; matrix_block_ptr. </p>

</div>
</div>
<a id="aca008740c37d2d00b90f696ab19abb59"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::_colBlockIndices</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>vector of the indices of the blocks along the cols </p>

</div>
</div>
<a id="ae3f063a5efc2708b41806ac361fd3ca6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::_hasStorage</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab0bd9c6d5b7b8704af1bc679032382e3"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class MatrixType = MatrixXd&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;int&gt; <a class="el" href="classg2o_1_1_sparse_block_matrix.html">g2o::SparseBlockMatrix</a>&lt; MatrixType &gt;::_rowBlockIndices</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>vector of the indices of the blocks along the rows. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/Thirdparty/g2o/g2o/core/<a class="el" href="sparse__block__matrix_8h_source.html">sparse_block_matrix.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/Thirdparty/g2o/g2o/core/<a class="el" href="sparse__block__matrix_8hpp_source.html">sparse_block_matrix.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceg2o.html">g2o</a></li><li class="navelem"><a class="el" href="classg2o_1_1_sparse_block_matrix.html">SparseBlockMatrix</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
